/*
**     $VER: rtgmaster.h 1.013 (15 Jan 1998)
*/

MODULE	'utility/tagitem',
			'exec/libraries',
			'exec/ports',
			'rtgmaster/rtgsublibs'

#define smr_Dummy       TAG_USER
#define smr_MinWidth    (smr_Dummy + $01)
// [320] This tag sets the minimum width in
// pixels which the user is allowed to select

#define smr_MaxWidth    (smr_Dummy + $02)
// [2048] This tag sets the maximum width in
// pixels which the user is allowed to select

#define smr_MinHeight   (smr_Dummy + $03)
// [200] This tag sets the minimum height in
// pixels which the user is allowed to select

#define smr_MaxHeight   (smr_Dummy + $04)
// [2048] This tag sets the maximum height in
// pixels which the user is allowed to select

#define smr_PlanarRoundW  (smr_Dummy + $05)
// [16] RtgScreenModeReq will round user inputed
// values for Width to nearest higher multiple
// of thig tag for Planar display modes

#define smr_PlanarRoundH  (smr_Dummy + $06)
// [1] RtgScreenModeReq will round user inputed
// values for Height to nearest higher multiple
// of thig tag for Planar display modes

#define smr_ChunkyRoundW  (smr_Dummy + $07)
// [1] RtgScreenModeReq will round user inputed
// values for Width to nearest higher multiple
// of thig tag for Chunky display modes

#define smr_ChunkyRoundH  (smr_Dummy + $08)
// [1] RtgScreenModeReq will round user inputed
// values for Height to nearest higher multiple

#define smr_ProgramUsesC2P    (smr_Dummy + $0c)
// [TRUE] If the program doesn't use the c2p call you have
// to specify FALSE. In this case the c2p part of the
// window is hidden and the the current c2p module is not
// used when filtering the screen modes.
// of thig tag for Chunky display modes

#define smr_ChunkySupport  (smr_Dummy + $09)
// [0] This LONG is used to indicate which
// Chunky modes the user is allowed to select.
// A set bit means the mode is selectable.
// See the rtg_ChunkySupport tag for more
// information.

#define smr_PlanarSupport  (smr_Dummy + $0a)
// EITEM smr_PlanarSupport ;[0] This LONG is used to indicate which
// Planar modes the user is allowed to select.
// A set bit means the mode is selectable.
// See the rtg_PlanarSupport tag for more
// information.

#define smr_Buffers        (smr_Dummy + $0b)
// [1] Using this tag you're can specify
// the number of buffers your application needs.
// Usually this ranges from 1-3.  Specify
// it here to filter out ScreenModes which can't
// handle the number of buffers you require.

//*******
// Attention: The following initial values are overwritten
// by the saved preferences if a valid preferences file
// is found.
#define smr_InitialWidth     (smr_Dummy + $10)
// [320] Initial screen width
// The minimal/maximal selectable width is taken into account.

#define smr_InitialHeight    (smr_Dummy + $11)
// [200] Initial screen height
// The minimal/maximal selectable height is taken into account.

#define smr_InitialDepth     (smr_Dummy + $12)
// [8] Log2 number of colors

#define smr_InitialScreenMode  (smr_Dummy + $13)
// [the first selectable screenmode]
// Ptr to a string describing the ScreenMode
// (this is essentially the string pointed to
// by sm_Name)

#define smr_InitialDefaultW    (smr_Dummy + $14)
// [TRUE] False if you don't want the Default
// width gadget active.

#define smr_InitialDefaultH    (smr_Dummy + $15)
// [TRUE] False if you don't want the Default
// height gadget active.

#define smr_PrefsFileName      (smr_Dummy + $16)
// ["RtgScreenMode.prefs"]
// Specifies the file where the selected screenmode loaded from
// and saved to. If you set this to NULL, the save gadget
// is disabled and no screenmode is loaded at the beginning.
// The window is certainly opened without pressing the shift
// key then.
// If a valid preferences file is found the "smr_Initial" tags
// are ignored. It makes not much sense to specify inital values
// without setting smr_PrefsFileName to NULL.

#define smr_ForceOpen          (smr_Dummy + $17)
// [FALSE] If false, the screenmode requester reads the screenmode
// from the file specified by smr_PrefsFileName and returns immediately.
// The requester opens only in case of an error when reading the preferences
// or when the user presses shift while the requester is called.
// If true, the requester opens in any case and lets the user select a
// new mode.

#define smr_TitleText          (smr_Dummy + $18)
// ["RTG Screenmode Requester"] (STRPTR)
// The title text of the window

#define smr_WindowLeftEdge    (smr_Dummy + $19)
// [-1 (= centered)] The left edge of the requester window
// The value -1 means that the window is centered horicontically.

#define smr_WindowTopEdge     (smr_Dummy + $1a)
// [-1 (= centered)] The top edge of the requester window
// The value -1 means that the window is centered vertically.

#define smr_Screen            (smr_Dummy + $1b)
// [Default Pubscreen] (struct Screen *)
// The (custom or public) screen on which the screenmode requester should
// be opened

#define smr_PubScreenName     (smr_Dummy + $1c)
// [NULL] (STRPTR)
// The name of the public screen on which the screenmode
// requester should be opened; if not found, the default
// pubscreen is used.
//----------------added on 27/10/97 by Wolfram---------------

#define smr_MinPixelAspect    (smr_Dummy + $1d)
// [0] Minimal pixel aspect, defined as
// (1 << 16) * pixel_height / pixel_width
// see also: smr_PixelAspect_Proportional, _Wide and _High

#define smr_MaxPixelAspect    (smr_Dummy + $1e)
// [ULONG_MAX] Maximal pixel aspect, defined as
// (1 << 16) * pixel_height / pixel_width
// End of RtgScreenModeReq() enumeration ***

//**********************************************************************
// Special values for smr_MinPixelAspect and smr_MaxPixelAspect:
//
// If you want to get only proportional screen modes with 20% variation,
// you can set for example:
//
// smr_MinPixelAspect, smr_PixelAspect_Proportional *  8 / 10,
// smr_MaxPixelAspect, smr_PixelAspect_Proportional * 12 / 10
//
#define smr_PixelAspect_Proportional  (1 << 16)
#define smr_PixelAspect_Wide          (smr_PixelAspect_Proportional / 2)
#define smr_PixelAspect_Narrow        (smr_PixelAspect_Proportional * 2)
// Execpt for the rb_LibBase structure this structure is private and for
// the internal use of RtgMaster.library ONLY.  This structure will change
// in the future.

OBJECT RDCMPData
	port:PTR TO MsgPort,
	signal:ULONG,
	MouseX:PTR TO WORD,
	MouseY:PTR TO WORD

OBJECT RTGMasterBase
	base:Library,
	Pad:WORD,
	SegList:ULONG,
	DosBase:PTR,
	ExecBase:PTR,
	GadToolsBase:PTR,
	GfxBase:PTR,
	IntBase:PTR,
	UtilityBase:PTR,
	Track[8]:BYTE,
	Libraries:PTR TO RtgLibs,
	FirstScreenMode:PTR,
	LinkerDB:PTR

// This structure is private and for the internal use of RtgMaster.library
// ONLY.  This structure will change in the future.
OBJECT RtgLibs
	Next:PTR,
	ID:ULONG,
	LibBase:PTR,
	SMList:PTR,
	LastSM:PTR,
	LibVersion:UWORD

OBJECT RtgBobHandle
	BufSize:ULONG,
	RtgScreen:PTR TO RtgScreen,
	RefreshBuffer:PTR,
	BPR:ULONG,
	Width:ULONG,
	Height:ULONG,
	numsprites:UWORD,
	maxnum:UWORD,
	reserved:ULONG
